///*******************************************************************************
// * Copyright (c) 2000, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.dialogs;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.jface.wizard.IWizard;
//import org.eclipse.jface.wizard.IWizardPage;
//import org.eclipse.jface.wizard.WizardDialog;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.Shell;
//import org.eclipse.swt.widgets.Text;
//import org.eclipse.swt.widgets.Tree;
//import org.eclipse.swt.widgets.TreeItem;
//import org.eclipse.swt.widgets.Widget;
//import org.eclipse.ui.IWorkingSet;
//import org.eclipse.ui.IWorkingSetManager;
//import org.eclipse.ui.help.WorkbenchHelp;
//import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.registry.WorkingSetDescriptor;
//import org.eclipse.ui.internal.registry.WorkingSetRegistry;
//import org.eclipse.ui.tests.TestPlugin;
//import org.eclipse.ui.tests.harness.util.DialogCheck;
//import org.eclipse.ui.tests.harness.util.FileUtil;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//
///**
// * Abstract test class for the working set wizard tests.
// */
//public abstract class UIWorkingSetWizardsAuto extends UITestCase {
//    protected static final int SIZING_WIZARD_WIDTH = 470;
//
//    protected static final int SIZING_WIZARD_HEIGHT = 550;
//
//    protected static final int SIZING_WIZARD_WIDTH_2 = 500;
//
//    protected static final int SIZING_WIZARD_HEIGHT_2 = 500;
//
//    protected static final String WORKING_SET_NAME_1 = "ws1";
//
//    protected static final String WORKING_SET_NAME_2 = "ws2";
//
//    protected WizardDialog fWizardDialog;
//
//    protected IWizard fWizard;
//
//    protected IProject p1;
//
//    protected IProject p2;
//
//    protected IFile f1;
//
//    protected IFile f2;
//
//    public UIWorkingSetWizardsAuto(String name) {
//        super(name);
//    }
//
//    protected void checkTreeItems() {
//        List widgets = getWidgets((Composite) fWizardDialog.getCurrentPage()
//                .getControl(), Tree.class);
//        Tree tree = (Tree) widgets.get(0);
//        TreeItem[] treeItems = tree.getItems();
//        for (int i = 0; i < treeItems.length; i++) {
//            treeItems[i].setChecked(true);
//            Event event = new Event();
//            event.detail = SWT.CHECK;
//            event.item = treeItems[i];
//            tree.notifyListeners(SWT.Selection, event);
//        }
//    }
//
//    private void deleteResources() throws CoreException {
//        try {
//            if (p1 != null) {
//                FileUtil.deleteProject(p1);
//            }
//            if (p2 != null) {
//                FileUtil.deleteProject(p2);
//            }
//
//        } catch (CoreException e) {
//            TestPlugin.getDefault().getLog().log(e.getStatus());
//            fail();
//            throw (e);
//
//        }
//
//    }
//
//    private Shell getShell() {
//        return DialogCheck.getShell();
//    }
//
//    protected List getWidgets(Composite composite, Class clazz) {
//        Widget[] children = composite.getChildren();
//        List selectedChildren = new ArrayList();
//
//        for (int i = 0; i < children.length; i++) {
//            Widget child = children[i];
//            if (child.getClass() == clazz) {
//                selectedChildren.add(child);
//            }
//            if (child instanceof Composite) {
//                selectedChildren.addAll(getWidgets((Composite) child, clazz));
//            }
//        }
//        return selectedChildren;
//    }
//
//    /**
//     * <code>fWizard</code> must be initialized by subclasses prior to
//     * calling this.
//     */
//    protected void doSetUp() throws Exception {
//        super.doSetUp();
//
//        fWizardDialog = new WizardDialog(getShell(), fWizard);
//        fWizardDialog.create();
//        Shell dialogShell = fWizardDialog.getShell();
//        dialogShell.setSize(Math.max(SIZING_WIZARD_WIDTH_2, dialogShell
//                .getSize().x), SIZING_WIZARD_HEIGHT_2);
//        WorkbenchHelp.setHelp(fWizardDialog.getShell(),
//                IWorkbenchHelpContextIds.WORKING_SET_NEW_WIZARD);
//
//        IWorkingSetManager workingSetManager = fWorkbench
//                .getWorkingSetManager();
//        IWorkingSet[] workingSets = workingSetManager.getWorkingSets();
//        for (int i = 0; i < workingSets.length; i++) {
//            workingSetManager.removeWorkingSet(workingSets[i]);
//        }
//        setupResources();
//    }
//
//    private void setupResources() throws CoreException {
//        p1 = FileUtil.createProject("TP1");
//        p2 = FileUtil.createProject("TP2");
//        f1 = FileUtil.createFile("f1.txt", p1);
//        f2 = FileUtil.createFile("f2.txt", p2);
//    }
//
//    protected void setTextWidgetText(String text, IWizardPage page) {
//        List widgets = getWidgets((Composite) page.getControl(), Text.class);
//        Text textWidget = (Text) widgets.get(0);
//        textWidget.setText(text);
//        textWidget.notifyListeners(SWT.Modify, new Event());
//    }
//
//    protected void doTearDown() throws Exception {
//        deleteResources();
//        super.doTearDown();
//    }
//    
//    protected WorkingSetDescriptor[] getEditableWorkingSetDescriptors() {
//        WorkingSetRegistry registry = WorkbenchPlugin.getDefault().getWorkingSetRegistry();
//        WorkingSetDescriptor[] all = registry.getWorkingSetDescriptors();
//        ArrayList editable = new ArrayList(all.length);
//        for (int i = 0; i < all.length; i++) {
//            WorkingSetDescriptor descriptor = all[i];
//            if (descriptor.isEditable()) {
//                editable.add(descriptor);
//            }
//        }
//        return (WorkingSetDescriptor[]) editable.toArray(new WorkingSetDescriptor[editable.size()]);
//    }
//
//}
